<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    //【1】js自带的reverse方法。
    var arr = [1,2,3,4,5];
    console.log(arr.reverse());//【返回值】返回值为新数组。[5, 4, 3, 2, 1]
    console.log(arr);//【原数组】原数组被改变。[5, 4, 3, 2, 1]
    //【2】js自带的sort方法
    var arr1 = [1,4,3,2,10,12,11,5];
    console.log(arr1.sort());//【返回值】返回值为新数组。[1, 10, 11, 12, 2, 3, 4, 5]
    console.log(arr1);//【原数组】原数组被改变。[1, 10, 11, 12, 2, 3, 4, 5]
    //【2-1】sort方法的内部机制
//如果第一个参数应该位于第二个之前则返回一个负数，反之返回一个正数，如果相等就返回0。
//现在实现的是升序，反过来就可以实现降序。
    function  compare(value1,value2) {
        if(value1 < value2){
            console.log(11);
            return -1;
        }else if(value1 > value2){
            console.log(22);
            return 1;
        }else {
            console.log(33);
            return 0;
        }
    };
    //以上代码可以简化为【升序】
    function compare (value1,value2) {
        return value1 - value2;
    };
    //下面为倒序
    function compare (value1,value2) {
        return value2 - value1;
    };
    var arr2 = [1,4,3,2,10,12,11,5];
    console.log(arr2.sort(compare));//[1, 2, 3, 4, 5, 10, 11, 12]
    //【2-2】借助sort方法将对象依照某个属性排序【注意，如果有某个数组的该属性不存在，则
    // 将无法做到按照属性排序。】
    var items = [
        { name: 'Edward', value: 21 },
        { name: 'Sharpe', value: 37 },
        { name: 'And', value: 45 },
        { name: 'The', value: -12 },
        { name: 'Magnetic',value:0 },
        { name: 'Zeros', value: 37 }
    ];
    items.sort(function (a, b) {
        if (a.value > b.value) {
            return 1;
        }
        if (a.value < b.value) {
            return -1;
        }
        // a 必须等于 b
        return 0;
    });
    console.log(items);//
</script>
</body>
</html>